home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / nrpas13.arc / TWOFFT.PAS < prev    next >
Pascal/Delphi Source File  |  1991-05-01  |  1KB  |  40 lines

  1. PROCEDURE twofft(data1,data2: glnarray;
  2.        VAR fft1,fft2: gl2narray; n: integer);
  3. (* Programs using routine TWOFFT must define types
  4. TYPE
  5.    glnarray = ARRAY [1..n] OF real;
  6.    gl2narray = ARRAY [1..2*n] OF real;
  7. where n is the dimension of the real-valued data arrays. *)
  8. VAR
  9.    nn3,nn2,nn,jj,j: integer;
  10.    rep,rem,aip,aim: real;
  11. BEGIN
  12.    nn := n+n;
  13.    nn2 := nn+2;
  14.    nn3 := nn+3;
  15.    FOR j := 1 TO n DO BEGIN
  16.       jj := j+j;
  17.       fft1[jj-1] := data1[j];
  18.       fft1[jj] := data2[j]
  19.    END;
  20.    four1(fft1,n,1);
  21.    fft2[1] := fft1[2];
  22.    fft1[2] := 0.0;
  23.    fft2[2] := 0.0;
  24.    FOR jj := 1 TO (n DIV 2) DO BEGIN
  25.       j := 2*jj+1;
  26.       rep := 0.5*(fft1[j]+fft1[nn2-j]);
  27.       rem := 0.5*(fft1[j]-fft1[nn2-j]);
  28.       aip := 0.5*(fft1[j+1]+fft1[nn3-j]);
  29.       aim := 0.5*(fft1[j+1]-fft1[nn3-j]);
  30.       fft1[j] := rep;
  31.       fft1[j+1] := aim;
  32.       fft1[nn2-j] := rep;
  33.       fft1[nn3-j] := -aim;
  34.       fft2[j] := aip;
  35.       fft2[j+1] := -rem;
  36.       fft2[nn2-j] := aip;
  37.       fft2[nn3-j] := rem
  38.    END
  39. END;
  40.